#include <iostream>
#include <sstream>
#include <string>
#include <windows.h>
#include "Interfaz.h"



using namespace std;
Interfaz::Interfaz(){}
Interfaz::~Interfaz(){}


void Interfaz::menuPrincipal()
{
    //Crea una instancia de THL que se encarga de crear vacio a todas las demas
    THL empresa("THL", "Heredia, Costa Rica", "thlcompany@hotmail.com", 2349834,32223);

    int id;
    char seguridad;
    float peso, impuestos;
    string nombre,direccion,numID, descripcion,ruta,telefono;

    int done = 0;
    char check[1];
    int opc;

    //Menu
    while(!done)
    {
        system("cls");
        cout<<"*****************************************************************************\n";
        cout<<"*                                                                           *\n";
        cout<<"*\tPresiona 1 para annadir un nuevo cliente                            *\n";
        cout<<"*\tPresiona 2 para grabar la lista de cliente en ListaCliente.txt      *\n";
        cout<<"*\tPresiona 3 para llenar la lista de clientes con ListaCliente.txt    *\n";
        cout<<"*\tPresiona 4 para realizar un envio a un cliente del registro         *\n";
        cout<<"*\tPresiona 5 para grabar el historial en ListaEnvio.txt               *\n";
        cout<<"*\tPresiona 6 para llenar el historial con ListaEnvio.txt              *\n";
        cout<<"*\tPresiona 7 para mostrar los envios de un cliente                    *\n";
        cout<<"*\tPresiona 8 para mostrar a todos los cliente                         *\n";
        cout<<"*\tPresiona 9 para mostrar el historial de envios                      *\n";
        cout<<"*\tPresiona 10 para determinar el regalo de un cliente                 *\n";
        cout<<"*\tPresiona otro numero para salir                                     *\n";
        cout<<"*                                                                           *\n";
        cout<<"*****************************************************************************\n";
        cout<<"\n-> ";
        cin>>check;

        opc = compruebaInt(check);

          if(opc == 1){
                Cliente *clie = new Cliente;
                cout<<"Escribe el nombre: ";
                cin>>nombre;
                clie->setNombre(nombre);
                cout<<"Escribe el ID: ";
                char idC[1];
                cin>>idC;
                id = compruebaInt(idC);
                clie->setId(id);
                cout<<"Escribe la direccion: ";
                cin>>direccion;
                clie->setDireccion(direccion);
                cout<<"Escribe el numero de telefono: ";
                string tel;
                cin>>tel;
                clie->setTelefono(tel);
                empresa.getAdmin()->registrarCliente(clie);
                cout<<"El cliente ha sido creado\n";
                system("pause");
           }
           else if(opc == 4)
           {

                cout<<"Por favor de las caracteristicas del envio: \n";
                cout<<"Cliente: ";
                string var;
                cin>>var;
                if(empresa.getAdmin()->getLista()->buscarPorNombre(var) == NULL)
                    cout<<"No existe el cliente "<<var<<endl;
                else
                {
                    Envios *obj = new Envios;
                    obj->setCliente(var);
                    cout<<"Num ID: ";
                    cin>>numID;
                    obj->setNumID(numID);
                    cout<<"Descripcion: ";
                    cin>>descripcion;
                    obj->setDescripcion(descripcion);
                    cout<<"Peso: ";
                    cin>>peso;
                    obj->setPeso(peso);
                    cout<<"Seguridad (A/B/C): ";
                    cin>>seguridad;
                    obj->setSeguridad(seguridad);
                    cout<<"Impuestos: ";
                    cin>>impuestos;
                    obj->setImpuestos(impuestos);
                    obj->getArea()->selecArea();
                    empresa.getAdmin()->getHistorial()->agregarEnvio(obj);
                    empresa.getAdmin()->agregarEnvio(obj);
                    cout<<"\nEl precio total del envio es: "<<empresa.getFinan()->calcularCostoTotal(obj)<<endl;

                }
                system("pause");
           }

            else if(opc == 8){
                cout<<"La lista de clientes es: \n";
                empresa.getAdmin()->getLista()->mostrar();
                system("PAUSE");
            }
            else if(opc == 7)
            {
                cout<<"Escriba el nombre del cliente: ";
                cin>>nombre;
                empresa.getAdmin()->getLista()->buscarPorNombre(nombre)->getLista()->mostrarListaEnvios();
                system("PAUSE");
            }
            else if(opc == 10)
            {
                cout<<"Escriba el nombre del cliente que quiere determinar el regalo: ";
                string nome;
                cin>>nome;
                if(empresa.getAdmin()->getLista()->buscarPorNombre(nome)!= NULL);
                {
                    cout<<"El regalo es";
                    Cliente* clie = empresa.getAdmin()->getLista()->buscarPorNombre(nome);
                    cout<<empresa.getAdmin()->DeterminarRegalo(clie)<<endl;
                }
                system("pause");
            }
            else if(opc == 9)
            {
                cout<<"-----------  Historial de Envios ---------\n";
                empresa.getAdmin()->getHistorial()->mostrarHistorial();
                system("pause");
            }
            else if(opc == 5)
            {
                AdminArchivos file("ListaEnvios.txt");
                if(file.grabarListaEnvio(empresa.getAdmin()->getHistorial()->getLista()))
                   cout<<"La lista se ha grabado con exito\n";
                else
                    cout<<"No se pudo grabar la lista\n";

                file.closeFile();
                system("pause");
            }
            else if(opc == 6)
            {
                AdminArchivos file("ListaEnvios.txt");

                ListaEnvio* lista= file.levantarListaEnvio();
                if(lista != NULL)
                {
                    empresa.getAdmin()->getHistorial()->setList(lista);
                    cout<<"Se levanto el historial con exito\n";
                }
                else
                    cout<<"No se pudo levantar el historial\n";
                system("pause");

            }
            else if(opc == 2)
            {
                AdminArchivos file("ListaClientes.txt");
                if(file.grabarListaCliente(empresa.getAdmin()->getLista()))
                    cout<<"La lista se ha grabado con exito\n";
                else
                    cout<<"No se pudo grabar la lista\n";
                file.closeFile();
                system("pause");
            }
            else if(opc == 3)
            {
                AdminArchivos file("ListaClientes.txt");
                ListaCliente* lista= file.levantarListaCliente();
                if(lista != NULL)
                {
                    empresa.getAdmin()->setLista(lista);
                    cout<<"Se levanto la lista de clientes con exito\n";
                }
                else
                    cout<<"No se pudo levantar la lista de clientes\n";
                system("pause");
            }

            else
            {
                cout<<"Saliendo...";
                done = 1;
            }
    }
}
